package com.ruoyi.system.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.system.domain.Assess;
import com.ruoyi.system.domain.dto.AssessDTO;
import com.ruoyi.system.domain.dto.CommitAssessDTO;
import com.ruoyi.system.domain.dto.ReportStudentDTO;
import com.ruoyi.system.domain.dto.ReportTeamDTO;

import javax.servlet.http.HttpServletResponse;

/**
 * 【请填写功能名称】Service接口
 *
 * @author ruoyi
 * @date 2025-04-22
 */
public interface IAssessService
{
    /**
     * 查询【请填写功能名称】
     *
     * @param id 【请填写功能名称】主键
     * @return 【请填写功能名称】
     */
    public Assess selectAssessById(Long id);

    /**
     * 查询【请填写功能名称】列表
     *
     * @param assess 【请填写功能名称】
     * @return 【请填写功能名称】集合
     */
    public List<Assess> selectAssessList(Assess assess);

    /**
     * 新增【请填写功能名称】
     *
     * @param assess 【请填写功能名称】
     * @return 结果
     */
    public int insertAssess(Assess assess);

    /**
     * 修改【请填写功能名称】
     *
     * @param assess 【请填写功能名称】
     * @return 结果
     */
    public int updateAssess(Assess assess);

    /**
     * 批量删除【请填写功能名称】
     *
     * @param ids 需要删除的【请填写功能名称】主键集合
     * @return 结果
     */
    public int deleteAssessByIds(Long[] ids);

    /**
     * 删除【请填写功能名称】信息
     *
     * @param id 【请填写功能名称】主键
     * @return 结果
     */
    public int deleteAssessById(Long id);

    int determineTaskStatus(Assess assess);

    String editAssess(AssessDTO assessDTO);

    int commitAssess(CommitAssessDTO assessDTO);

    void exportTaskOverview(HttpServletResponse response, Long taskId);

    void generateReportInfo(ReportStudentDTO reportStudentDTO);

    Map<String, Object> reportInfo(ReportStudentDTO reportStudentDTO);

    Map<String, Object> teamReportInfo(ReportTeamDTO reportTeacherDTO);

    Map<String, Object> gradeClassReportInfo(ReportTeamDTO reportDTO);

    Map<String, Object> schoolReportInfo(ReportTeamDTO reportDTO);

    Map<String, Object> regionReportInfo(ReportTeamDTO reportDTO);

    List<Assess> selectAssessListByStatus(List<Integer> statusList);
}
